Software developers typically test software prior to distributing the software to customers. One technique for testing software is a unit test, which is used to test a software unit (e.g., classes, methods, functions, procedures, etc.) to ensure that the functionality of the software unit is correct. Unit tests for software units are typically generated manually for each software unit. For large software applications, the process of defining and developing unit test is time-consuming and burdensome. Furthermore, in certain types of software architecture paradigms, manually generating unit tests is inefficient because the functionality of some software units may be substantially similar to the functionality of other software units.
Like reference numerals refer to corresponding parts throughout the drawings.